# https://zhuanlan.zhihu.com/p/361988777
# https://blog.csdn.net/weixin_30522183/article/details/99511029
# stringr 包的学习

library(stringr)

# str_c

## c字符串的拼接
print(str_c('aaa', 'bbb', sep=''))
print(str_c('aaa', 'bbb'))
print(str_c('aaa', 'bbb', sep='|'))
print(str_c('aaa', 'bbb', sep='  '))
print(str_c('aaa', 'bbb', sep=' '))

## 向量的拼接
print(str_c(c('a', 'b', 'c', 'd'), sep='   '))
print(str_c(c('a', 'b', 'c', 'd'), collapse='   '))
print(str_c(c('a', 'b', 'c', 'd'), collapse='|'))
print(str_c(c('a', 'b', 'c', 'd'), c('a', 'b', 'c', 'd'), collapse='|'))
print(str_c(c('a', 'b', 'c'), c('a', 'b', 'c'), collapse='|'))
print(str_c(c('a', 'b', 'c'), c('a', 'b', 'c')))
## print(str_c(c('a', 'b', 'c'), c('a', 'b'))) # 发生错误
print(str_c(c('a', 'b', 'c'), 'wyl350'))
print(str_c('wyl350', c('a', 'b', 'c')))

first = str_c(c('a', 'b'), c('1', '2'), sep='|')
first2 = str_c(c('a', 'b'), c('1', '2'), collapse='?')
second = str_c(first,collapse='?')
print(second)

print('=====')

## sep 和 collapse 的顺序是g无关的，都是先 sep ，再 collapes

str_c(c('a', 'b'), c('1', '2'), sep = '|', collapse='?')
str_c(c('a', 'b'), c('1', '2'), collapse='?', sep = '|')
str_c(c('a', 'b'), '?', '!')
str_c(c('a', 'b'), '?', '!', 'wyl350')

# NA 的处理
str_c('a', NA, 5) #  无法处理 NA
print(NA)

paste('a', NA, 5)
paste('a', NA, 5, sep='')

print('======')

# str_trim

str_trim('     b\t      ')
str_trim('     b\t      ', side='left')
str_trim('     b\t      ', side='right')
str_trim(c(' a  b \t', '   k    '))

# str_pad: 填充字符串

str_pad('a', width=4, pad='=')
str_pad(c('a', 'b'), width=4, pad='=', side='right')

# str_dup: 复制字符串

str_dup('a', 100)
str_dup('abcd', times=c( 2, 3))
str_dup(c('ab', 'cd'), times=c(1, 5))

# str_sub: 截取指定位的字符串

str_sub('abcdefg', start=1, end=-1)
str_sub('abcdefg', start=-1, end=-1)
str_sub('abcdefg', start=-2343, end=-1)
str_sub('abcdefg', start=1, end=100)
str_sub('abcdefg', start=1, end=-2)
str_sub('abcdefg', start=-2343, end=-1)

str_sub('ABCDEFGH', start= c(1, 3), end=c(2, 5))

# 字符串统计函数

str_count('he llo')
str_count('he llo hello', 'he')
str_count('你好')
str_count('你好', '你')

str_count(c('python', 'java'), pattern=c('p', 'a'))
str_count(c('pp', 'ppwp'), pattern='p')

str_length('hello')
str_length(c('公众号', '统计与数据挖掘', NA))

# to be continued

str_length(c('公众号', '统计与数据挖掘', NA))
str_length(c('公众号', '统计与数据挖掘', NA))
str_length(c('公众号', '统计与数据挖掘', NA))
str_length(c('公众号', '统计与数据挖掘', NA))
str_length(c('公众号', '统计与数据挖掘', NA))
str_length(c('公众号', '统计与数据挖掘', NA))
str_length(c('公众号', '统计与数据挖掘', NA))

